最近接了一個急案,沒辦法浪費太多時間在API的開發上。因緣際會下得知了EF Core這個方便的工具,它可以快速地建立Model,再搭配Scaffolding,短時間內就能產出基本的CRUD。因此我決定將過程記錄下來,希望對其他面臨類似情況的人有所幫助。
本文將從環境建立詳細記錄如何利用EF Core及Scaffolding快速建立API,包括可能遇到的BUG、解決方法、Swagger以及最終成果。
讓我們一同踏上這段API開發之旅吧!
搜尋 ASP.Net Core, 選擇 ASP.Net Core Web 應用程式
設定專案名稱
架構選擇.NET Core
開啟SQL Server物件總管拿連接字串,路徑:檢視->SQL Server物件總管
加入SQL Server,SQL Server物件總管底下的+圖案點下去。
把自己的資料庫加進來就對了
選擇你要導入的資料庫,屬性會有寫連接字串。
路徑:工具->NuGet套件管理員->管理方案的NuGet套件
搜尋Microsoft.EntityFrameworkCore.SqlServer
這邊選的是3.1.32的版本
搜尋Microsoft.EntityFrameworkCore.Tools
這邊選的是3.1.32的版本
路徑:工具->NuGet套件管理員->管理方案的NuGet套件
在套件管理主控台輸入指令。
Scaffold-DbContext "ConnectionString" -OutputDir Models Microsoft.EntityFrameworkCore.SqlServer -Force
ConnectionString
請改成自己的連接字串OutputDir
為要建立的資料夾名稱,這邊是設定為Models如果出現錯誤Keyword not supported: ‘trust server certificate’.
,請把連接字串裡的Trust Server Certificate
改成TrustServerCertificate
,如果Keyword not supported:
後面的不是trust server certificate
而是application intent
之類的,也是同個做法。
建立成功會有Models的資料夾,裡面會有資料庫所有Table的Model。
在專案新增Controllers的資料夾。
對資料夾按右鍵->加入->新增Scaffold項目,選擇使用Entity Framework執行動作的API控制器。
選擇要建立Controller的Model,控制器名稱可以自己取也可以用預設的。
新增後就會幫你寫好簡單的CRUD了!
建好Model跟Controller後沒設定Startup還是不能用,所以這邊非常重要!
安裝Swagger套件,在套件管理器主控台執行以下程式碼:
Install-Package Swashbuckle.AspNetCore
找到ConfigureServices(IServiceCollection services)的Method,改為以下。
public void ConfigureServices(IServiceCollection services)
{
//{DB}Context請改成剛剛EFCore建的Models裡的{DB}Context。
//{DB}為資料庫的名稱,EFCore建的Context預設會由資料庫名稱命名。
services.AddDbContext<{DB}Context>();
services.AddControllers();
//Title可以根據你的專案命名
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Test", Version = v1" });
});
}
找到Configure(IApplicationBuilder app, IWebHostEnvironment env)的Method,改為以下。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
//Test可以根據你的專案命名
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Test v1"));
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Ctrl+F5執行,然後你就會看到找不到網頁ㄏㄏ
只要在網址後面加上/swagger/index.html
就會出現Swagger了!寫好的API都可以直接在這裡測試。
以上就是快速建立API的步驟啦,希望對你們有幫助!